home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS26.ADF / SoundScape / AztecExamples / README < prev    next >
Text File  |  1989-01-26  |  2KB  |  42 lines

  1. If you are using the Aztec 3.40 compiler, don't compile the example
  2. programs in this directory.  Rather, use the lattice ones and link 
  3. with the libraries in NewAztecLib.
  4.  
  5. If you are using an earlier Aztec compiler:
  6.  
  7. Because of different register passing conventions, a little extra
  8. work is involved in getting Aztec modules to run.
  9.  
  10. Aztec doesn't obey the Amiga register trashing conventions.  Normally,
  11. this is no problem since an Aztec program only calls Aztec routines, and
  12. things are set straight when system calls are made.
  13.  
  14. But with a SoundScape module, we run into an interesting problem:
  15. You provide routines that SoundScape calls.  SoundScape assumes that
  16. your routine will only trash register D0, D1, A0, and A1.  However,
  17. Aztec considers A6 and D3 to be scratch registers.  In addition, Aztec
  18. needs A4 loaded with its Data Segment pointer.
  19.  
  20. So, there are two routines your Aztec code needs to call.  On entering
  21. an Aztec function that is called by SoundScape, call `enteraztec()'.
  22. This saves several registers on the stack and loads A4 with the proper
  23. pointer.  When leaving your routine, call `leaveaztec'.  This reloads
  24. the saved registers from the stack.
  25.  
  26. These routines are in the file `aztec.asm'.  The assembled code is
  27. `aztec.o'.  
  28.  
  29. Use these routines entering and leaving your opencode, closecode, 
  30. outcode, and editcode routines.  In addition, if you use FunctionCall,
  31. you'll need to stick these in the function that is called (since
  32. it ends up being called by another process.)    
  33.  
  34. By the way, this comes in handy anytime you are writing
  35. code that gets called by the system.  For example, if you are writing
  36. an interrupt handler, you run into the same issues, which these 
  37. routines will fix.
  38.  
  39. Good luck!
  40.  
  41. Todor
  42.